#ifndef QBOOLPROPERTY_H
#define QBOOLPROPERTY_H

#include "QProperty.h"

namespace QPE{

//! The QBoolProperty can take two states: True or False.
class QTPROPERTYEXPLORER_DLL_EXPORT QBoolProperty : public QProperty
{
public:
	//! Default constructor
	QBoolProperty(const QString& name);

	//! Destructor
	~QBoolProperty() {}

	//! Get the data how it should be displayed
	virtual QVariant data (int column = DPC_Name, int role = Qt::DisplayRole) const;

	//! This is used by the model to set the data
	//! \param data The data to set
	//! \param role The role. Default is Qt::EditRole
	//! \return Returns true, if the data was changed, false if not.
	virtual bool setData (const QVariant& data, int role = Qt::EditRole);

	//! Returns item flags
	virtual Qt::ItemFlags flags(int column = DPC_Name) const;

	//! Returns a string containing the type of the property
	virtual QString type() const;

	//! Clones this property
	//! \param include_children Indicates whether to also clone the children
	//! \param container If a property is being passed here, no new QProperty is being created but instead it is tried to fill all the data into container. This can also be used when subclassing this function.
	//! \return Returns the newly created property (or container, if it was not NULL)
	virtual QProperty* clone(bool include_children = true, QProperty* container = NULL) const;

protected:
	//! The (translatable) text displayed when the property is set to true (default: "True")
	static QVariant TrueText;

	//! The (translatable) text displayed when the property is set to false (default: "False")
	static QVariant FalseText;
};

}

#endif // QBOOLPROPERTY_H
